Alteryxチームでプチハッカソンをやってみた 1つのファイルに含まれるデータの分類編
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
社内のAlteryxチームでは、1つのお題に対して各自でワークフローを持ち寄ることがあり、その様子をプチハッカソンとしてブログで紹介しています。今回は1つのファイルに含まれるデータの分類についてご紹介いたします。
プチハッカソン 1つのファイルに含まれるデータの分類編
お題
以下の画像は、1つのCSVファイルから読み込んだデータです。1つのファイルに「Okashi」「Yougashi」「Wagashi」という異なる種類のデータが含まれています。このデータを、「Okashi」「Yougashi」「Wagashi」の3つのデータに分割する、というのが今回のお題です。
解答1
スズによる解答はこちら。「データを3つに分ける」ということだけを目指して、Nullのデータの扱いなどは考えていないものです。
データの分類にはMulti-Row Formulaツールを使用しています。
式は以下のとおり設定しています。「Field_1」列の1つ上の行がNullだった場合は、「Category」列の1つ上の行に1足して出力します。
IIF(IsNull([Row-1:Field_1]), [Row-1:Category] + 1, [Row-1:Category])
出力結果はこちら、「Category」列に種類ごとに異なる数字が出力されています。
あとはFilterツールを使用して、「Category」列の数字ごとにデータを分けていきます。
解答2
じょんすみすによる解答はこちら。このワークフローでは、Output Dataツールでデータを3つに分けてファイルに出力します。
Formulaツールを使用して、新しい列をInt16型で作成します。
設定した式はこちら。「Field_1」列がNullの場合に1、それ以外の場合に0を出力します。
iif(isnull([Field_1]), 1, 0)
Running Totalツールを使用して、先ほど作成した列の数値を上の行から順足した数を出力します。
この時点でデータは以下のようになっています。
Filterツールを使用して、「Field_1」列がNullになっているデータを取り除きます。
Multi-Row Formulaツールを使用して「title」列をV_WString型で作成し、データの種類ごとに出力するためのファイル名を設定します。Group Byでは「Run Tot_i」列(Running Totalツールで出力した列)を指定しています。
設定した式はこちら。1行上の「title」列がない場合は「Field_1」列を、それ以外の場合は1行上の「title」列を出力します。
IF [Row-1:title] == "" THEN [Field_1] ELSE [Row-1:title] ENDIF
Filterツールを使用して「Field_1」列と「title」列が異なるデータのみ残します。
Selectツールで不要な列を削除したのち、Output Dataツールでファイルに出力します。Take File/Table Name From FieldでAppend Suffix to File/Table Nameを使用し、「title」列を指定します。
実行すると、ファイルが3つ作成されています。
ファイルの中を確認すると、それぞれのファイルにデータが出力されています。
最後に
今回は1つのファイルに含まれるデータの分類についてのプチハッカソンの様子をご紹介しました。
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。